package lingqi.library;

import lingqi.library.command.IExecutable;
import lingqi.library.input.Input;
import lingqi.library.input.QuitException;
import lingqi.library.user.AdminUser;
import lingqi.library.user.User;
import lingqi.library.user.UserStorage;

public class Main {
    public static void main(String[] args) {
        //0. 实例化一个负责处理输入的对象
        Input input = new Input();

        try {
            //1. 用户登录
            //创建用户管理的对象，由该对象完成用户登录的具体操作
            //1.1 要求用户输入
            //1.2 判断用户角色
            UserStorage userStorage = new UserStorage();
            User user = userStorage.login(input);
            System.out.println(user.getUsername());
            if(user instanceof AdminUser){
                System.out.println("是管理员");
            }else{
                System.out.println("是普通用户");
            }


            //2. 进入一个循环中
//            while (true) {
//                //2.1 打印用户角色对应的菜单,并且让用户选择
//                //execute : 执行
//                //executable: 具备可以执行的能力
//                //IExecutable：计划用接口去表示
//                //command: 命令
//                IExecutable command = input.menuAndSelect();
//
//                //2.2 根据用户的选择，执行对应的操作命令
//
//                command.excute(user, input);     //去执行
//            }
        }catch(QuitException exc){
            //用户要退出，我们什么都不错
        }
        //3. 用户退出，打印退出信息
        System.out.println("欢迎下次使用");
    }
}
